package com.ruoyi.wms.mapper;

import java.util.Date;
import java.util.List;
import com.ruoyi.wms.domain.WmsOwnerOrderNumberRecord;
import org.apache.ibatis.annotations.Param;

/**
 * 货主订单编号生成记录Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface WmsOwnerOrderNumberRecordMapper 
{
    /**
     * 查询货主订单编号生成记录
     * 
     * @param recordId 货主订单编号生成记录主键
     * @return 货主订单编号生成记录
     */
    public WmsOwnerOrderNumberRecord selectWmsOwnerOrderNumberRecordByRecordId(Long recordId);

    /**
     * 查询货主订单编号生成记录列表
     * 
     * @param wmsOwnerOrderNumberRecord 货主订单编号生成记录
     * @return 货主订单编号生成记录集合
     */
    public List<WmsOwnerOrderNumberRecord> selectWmsOwnerOrderNumberRecordList(WmsOwnerOrderNumberRecord wmsOwnerOrderNumberRecord);

    /**
     * 根据货主ID、订单类型和日期查询记录
     * 
     * @param ownerId 货主ID
     * @param orderType 订单类型
     * @param generateDate 生成日期
     * @return 货主订单编号生成记录
     */
    public WmsOwnerOrderNumberRecord selectRecordByOwnerIdAndOrderTypeAndDate(@Param("ownerId") Long ownerId, 
                                                                               @Param("orderType") String orderType, 
                                                                               @Param("generateDate") Date generateDate);

    /**
     * 新增货主订单编号生成记录
     * 
     * @param wmsOwnerOrderNumberRecord 货主订单编号生成记录
     * @return 结果
     */
    public int insertWmsOwnerOrderNumberRecord(WmsOwnerOrderNumberRecord wmsOwnerOrderNumberRecord);

    /**
     * 修改货主订单编号生成记录
     * 
     * @param wmsOwnerOrderNumberRecord 货主订单编号生成记录
     * @return 结果
     */
    public int updateWmsOwnerOrderNumberRecord(WmsOwnerOrderNumberRecord wmsOwnerOrderNumberRecord);

    /**
     * 删除货主订单编号生成记录
     * 
     * @param recordId 货主订单编号生成记录主键
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRecordByRecordId(Long recordId);

    /**
     * 批量删除货主订单编号生成记录
     * 
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRecordByRecordIds(Long[] recordIds);

    /**
     * 根据货主ID删除生成记录
     * 
     * @param ownerId 货主ID
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRecordByOwnerId(Long ownerId);

    /**
     * 更新当前流水号（原子操作）
     * 
     * @param recordId 记录ID
     * @param currentSerial 当前流水号
     * @param lastOrderNo 最后生成的订单号
     * @return 结果
     */
    public int updateCurrentSerial(@Param("recordId") Long recordId, 
                                   @Param("currentSerial") Integer currentSerial, 
                                   @Param("lastOrderNo") String lastOrderNo);
}